home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / society / code.lua next >
Encoding:
Text File  |  2005-07-16  |  16.0 KB  |  498 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky01.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.okrikla = 0
  16.         room.maxdrzost = 20
  17.         room.kuk = 0
  18.         room.kobyla = 0
  19.         room.prekazka = 0
  20.         room.okriknuti = 2
  21.         room.vsichni = 0
  22.  
  23.         return function()
  24.             if isReady(small) and isReady(big) and no_dialog() then
  25.                 if valec.X == 7 and valec.Y == 9 and valec.dir == dir_no and room.prekazka == 0 then
  26.                     switch(random(2)){
  27.                         [0] = function()
  28.                             addv(0, "mik-v-sakra")
  29.                         end,
  30.                         [1] = function()
  31.                             addv(random(4), "mik-v-projet")
  32.                         end,
  33.                     }
  34.                     room.prekazka = 1
  35.                 elseif room.okrikla ~= 1 and room.vsichni == 1 then
  36.                     switch(random(room.okriknuti)){
  37.                         [0] = function()
  38.                             addv(random(5), "mik-v-ticho0")
  39.                         end,
  40.                         [1] = function()
  41.                             addv(random(5), "mik-v-ticho1")
  42.                         end,
  43.                         [2] = function()
  44.                             addv(random(5), "mik-v-ticho2")
  45.                         end,
  46.                     }
  47.                     planSet(room, "okrikla", 1)
  48.                 elseif room.okrikla == 1 then
  49.                     krab1:killSound()
  50.                     krab2:killSound()
  51.                     krab3:killSound()
  52.                     krab4:killSound()
  53.  
  54.                     room.vsichni = 0
  55.                     dialog_table = {
  56.                         [0] = function()
  57.                             addm(20 + random(15), "mik-m-krab")
  58.                             if random(100) < 50 then
  59.                                 addm(random(6), "mik-m-poust")
  60.                             end
  61.                         end,
  62.                         [1] = function()
  63.                             addm(10 + random(25), "mik-m-tusit")
  64.                         end,
  65.                         [2] = function()
  66.                             switch(random(2)){
  67.                                 [0] = function()
  68.                                     addv(10 + random(15), "mik-v-proto")
  69.                                 end,
  70.                                 [1] = function()
  71.                                     addv(10 + random(15), "mik-v-tak")
  72.                                 end,
  73.                             }
  74.                             if room.okriknuti == 3 then
  75.                                 switch(random(6)){
  76.                                     [0] = function()
  77.                                         addm(6 + random(5), "mik-m-nezlob")
  78.                                     end,
  79.                                     [1] = function()
  80.                                         addm(10 + random(25), "mik-m-myslit")
  81.                                     end,
  82.                                     [2] = function()
  83.                                         addm(random(5), "mik-m-nezlob")
  84.                                         addm(5 + random(15), "mik-m-myslit")
  85.                                     end,
  86.                                 }
  87.                             end
  88.                             room.okriknuti = 3
  89.                         end,
  90.                     }
  91.  
  92.                     dialog_table[3] = dialog_table[2]
  93.                     dialog_table[4] = dialog_table[2]
  94.                     switch(random(7))(dialog_table)
  95.  
  96.                     room.okrikla = 0
  97.                     krab1.drzej = 0
  98.                     krab2.drzej = 0
  99.                     krab3.drzej = 0
  100.                     krab4.drzej = 0
  101.                     adddel(random(20) + 30)
  102.                     planSet(krab1, "drzej", 1)
  103.                     planSet(krab2, "drzej", 1)
  104.                     planSet(krab3, "drzej", 1)
  105.                     planSet(krab4, "drzej", 1)
  106.                 elseif look_at(small, rybusa) and rybusa.afaze > 0 and random(100) < 10 and room.kuk == 0 then
  107.                     addm(random(5), "mik-m-proc")
  108.                     addv(random(5), "mik-v-videt")
  109.                     room.kuk = 1
  110.                 elseif look_at(small, kun) and room.kobyla == 0 and (small.Y == kun.Y or small.Y == kun.Y + 1) and xdist(small, kun) < 2 and kun.dir == dir_no and random(200) < 1 then
  111.                     addm(0, "mik-m-konik")
  112.                     room.kobyla = 1
  113.                 end
  114.             end
  115.         end
  116.     end
  117.  
  118.     -- -------------------------------------------------------------
  119.     local function prog_init_kun()
  120.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  121.  
  122.         kun.pauza = random(10)
  123.  
  124.         return function()
  125.             if kun.pauza > 0 then
  126.                 kun.pauza = kun.pauza - 1
  127.             else
  128.                 switch(kun.afaze){
  129.                     [0] = function()
  130.                         kun.afaze = random(2) + 2
  131.                         kun.pauza = 10 - kun.afaze + random((5 - kun.afaze) * 20)
  132.                     end,
  133.                     [1] = function()
  134.                         kun.afaze = random(4)
  135.                         kun.pauza = 10 + random(10)
  136.                     end,
  137.                     [2] = function()
  138.                         kun.pauza = random(150)
  139.                         if kun.pauza < 20 then
  140.                             kun.afaze = 3
  141.                         else
  142.                             kun.afaze = 1
  143.                         end
  144.                     end,
  145.                     [3] = function()
  146.                         kun.afaze = 0
  147.                         kun.pauza = random(20)
  148.                     end,
  149.                 }
  150.             end
  151.  
  152.             kun:updateAnim()
  153.         end
  154.     end
  155.  
  156.     -- -------------------------------------------------------------
  157.     local function prog_init_rybusa()
  158.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  159.  
  160.         rybusa.pauza = random(50)
  161.  
  162.         return function()
  163.             if rybusa.pauza > 0 then
  164.                 rybusa.pauza = rybusa.pauza - 1
  165.             else
  166.                 switch(rybusa.afaze){
  167.                     [0] = function()
  168.                         rybusa.afaze = 1
  169.                         rybusa.pauza = 10 + random(20)
  170.                     end,
  171.                     [1] = function()
  172.                         rybusa.afaze = random(4)
  173.                         if rybusa.afaze == 0 then
  174.                             rybusa.pauza = 20 + random(100)
  175.                         else
  176.                             rybusa.pauza = 10 + random(5)
  177.                         end
  178.                     end,
  179.                     [2] = function()
  180.                         rybusa.afaze = 1 + random(2) * 2
  181.                         rybusa.pauza = 10 + random(5)
  182.                     end,
  183.                     [3] = function()
  184.                         rybusa.afaze = 1 + random(2)
  185.                         rybusa.pauza = 10 + random(5)
  186.                     end,
  187.                 }
  188.             end
  189.  
  190.             rybusa:updateAnim()
  191.         end
  192.     end
  193.  
  194.     -- -------------------------------------------------------------
  195.     local function prog_init_sepie()
  196.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  197.  
  198.         sepie.mrk = 0
  199.         sepie.pozice = 0
  200.  
  201.         return function()
  202.             if random(7) < 4 then
  203.                 sepie.pozice = random(3)
  204.             end
  205.             if random(10) < 4 then
  206.                 sepie.mrk = random(2)
  207.             end
  208.             sepie.afaze = sepie.mrk * 3 + sepie.pozice
  209.  
  210.             sepie:updateAnim()
  211.         end
  212.     end
  213.  
  214.     -- -------------------------------------------------------------
  215.     local function prog_init_krab4()
  216.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  217.  
  218.         krab4.drzej = 1
  219.         krab4.keca = 0
  220.  
  221.         return function()
  222.             if krab4:isTalking() then
  223.                 krab4.keca = 1
  224.             else
  225.                 krab4.keca = 0
  226.             end
  227.             if krab4.keca == 0 and random(200) < krab4.drzej then
  228.                 if krab1.keca == 1 and krab2.keca == 1 and krab3.keca == 1 then
  229.                     room.vsichni = 1
  230.                 end
  231.                 switch(random(4)){
  232.                     [0] = function()
  233.                         krab4:talk("mik-x-stebet0")
  234.                     end,
  235.                     [1] = function()
  236.                         krab4:talk("mik-x-stebet1")
  237.                     end,
  238.                     [2] = function()
  239.                         krab4:talk("mik-x-stebet2")
  240.                     end,
  241.                     [3] = function()
  242.                         krab4:talk("mik-x-stebet3")
  243.                     end,
  244.                 }
  245.                 krab4.drzej = krab4.drzej + 1
  246.                 krab4.keca = 1
  247.             end
  248.             if krab4.keca == 1 then
  249.                 krab4.afaze = random(2) * 2
  250.             else
  251.                 krab4.afaze = 0
  252.             end
  253.             if random(100) < 5 then
  254.                 krab4.afaze = krab4.afaze + 1
  255.             end
  256.             if room.okrikla == 1 then
  257.                 krab4.drzej = 1
  258.             end
  259.  
  260.             krab4:updateAnim()
  261.         end
  262.     end
  263.  
  264.     -- -------------------------------------------------------------
  265.     local function prog_init_krab3()
  266.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  267.  
  268.         krab3.drzej = 1
  269.         krab3.keca = 0
  270.  
  271.         return function()
  272.             if krab3:isTalking() then
  273.                 krab3.keca = 1
  274.             else
  275.                 krab3.keca = 0
  276.             end
  277.             if krab3.keca == 0 and random(200) < krab3.drzej then
  278.                 if krab1.keca == 1 and krab2.keca == 1 and krab4.keca == 1 then
  279.                     room.vsichni = 1
  280.                 end
  281.                 switch(random(4)){
  282.                     [0] = function()
  283.                         krab3:talk("mik-x-stebet0")
  284.                     end,
  285.                     [1] = function()
  286.                         krab3:talk("mik-x-stebet1")
  287.                     end,
  288.                     [2] = function()
  289.                         krab3:talk("mik-x-stebet2")
  290.                     end,
  291.                     [3] = function()
  292.                         krab3:talk("mik-x-stebet3")
  293.                     end,
  294.                 }
  295.                 krab3.drzej = krab3.drzej + 1
  296.                 krab3.keca = 1
  297.             end
  298.             if krab3.keca == 1 then
  299.                 krab3.afaze = random(2) * 2
  300.             else
  301.                 krab3.afaze = 0
  302.             end
  303.             if random(100) < 5 then
  304.                 krab3.afaze = krab3.afaze + 1
  305.             end
  306.             if room.okrikla == 1 then
  307.                 krab3.drzej = 1
  308.             end
  309.  
  310.             krab3:updateAnim()
  311.         end
  312.     end
  313.  
  314.     -- -------------------------------------------------------------
  315.     local function prog_init_krab2()
  316.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  317.  
  318.         krab2.drzej = 1
  319.         krab2.keca = 0
  320.  
  321.         return function()
  322.             if krab2:isTalking() then
  323.                 krab2.keca = 1
  324.             else
  325.                 krab2.keca = 0
  326.             end
  327.             if krab2.keca == 0 and random(200) < krab2.drzej then
  328.                 if krab1.keca == 1 and krab3.keca == 1 and krab4.keca == 1 then
  329.                     room.vsichni = 1
  330.                 end
  331.                 switch(random(4)){
  332.                     [0] = function()
  333.                         krab2:talk("mik-x-stebet0")
  334.                     end,
  335.                     [1] = function()
  336.                         krab2:talk("mik-x-stebet1")
  337.                     end,
  338.                     [2] = function()
  339.                         krab2:talk("mik-x-stebet2")
  340.                     end,
  341.                     [3] = function()
  342.                         krab2:talk("mik-x-stebet3")
  343.                     end,
  344.                 }
  345.                 krab2.drzej = krab2.drzej + 1
  346.                 krab2.keca = 1
  347.             end
  348.             if krab2.keca == 1 then
  349.                 krab2.afaze = random(2) * 2
  350.             else
  351.                 krab2.afaze = 0
  352.             end
  353.             if random(100) < 5 then
  354.                 krab2.afaze = krab2.afaze + 1
  355.             end
  356.             if room.okrikla == 1 then
  357.                 krab2.drzej = 1
  358.             end
  359.  
  360.             krab2:updateAnim()
  361.         end
  362.     end
  363.  
  364.     -- -------------------------------------------------------------
  365.     local function prog_init_snek()
  366.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  367.  
  368.         snek.pauza = 3
  369.  
  370.         return function()
  371.             if snek.pauza > 0 then
  372.                 snek.pauza = snek.pauza - 1
  373.             else
  374.                 switch(snek.afaze){
  375.                     [0] = function()
  376.                         snek.afaze = random(2) * 2
  377.                     end,
  378.                     [1] = function()
  379.                         snek.afaze = random(4)
  380.                     end,
  381.                     [2] = function()
  382.                         snek.afaze = 1 + 2 * random(2)
  383.                     end,
  384.                     [3] = function()
  385.                         snek.afaze = random(3)
  386.                     end,
  387.                 }
  388.                 snek.pauza = random(20) + 5
  389.             end
  390.  
  391.             snek:updateAnim()
  392.         end
  393.     end
  394.  
  395.     -- -------------------------------------------------------------
  396.     local function prog_init_krab1()
  397.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  398.  
  399.         krab1.drzej = 1
  400.         krab1.keca = 0
  401.  
  402.         return function()
  403.             if krab1:isTalking() then
  404.                 krab1.keca = 1
  405.             else
  406.                 krab1.keca = 0
  407.             end
  408.             if krab1.keca == 0 and random(300) < krab1.drzej then
  409.                 if krab2.keca == 1 and krab3.keca == 1 and krab4.keca == 1 then
  410.                     room.vsichni = 1
  411.                 end
  412.                 switch(random(4)){
  413.                     [0] = function()
  414.                         krab1:talk("mik-x-stebet0")
  415.                     end,
  416.                     [1] = function()
  417.                         krab1:talk("mik-x-stebet1")
  418.                     end,
  419.                     [2] = function()
  420.                         krab1:talk("mik-x-stebet2")
  421.                     end,
  422.                     [3] = function()
  423.                         krab1:talk("mik-x-stebet3")
  424.                     end,
  425.                 }
  426.                 krab1.drzej = krab1.drzej + 1
  427.                 krab1.keca = 1
  428.             end
  429.             if krab1.keca == 1 then
  430.                 krab1.afaze = random(2) * 2
  431.             else
  432.                 krab1.afaze = 0
  433.             end
  434.             if random(100) < 5 then
  435.                 krab1.afaze = krab1.afaze + 1
  436.             end
  437.             if room.okrikla == 1 then
  438.                 krab1.drzej = 1
  439.             end
  440.  
  441.             krab1:updateAnim()
  442.         end
  443.     end
  444.  
  445.     -- --------------------
  446.     local update_table = {}
  447.     local subinit
  448.     subinit = prog_init_room()
  449.     if subinit then
  450.         table.insert(update_table, subinit)
  451.     end
  452.     subinit = prog_init_kun()
  453.     if subinit then
  454.         table.insert(update_table, subinit)
  455.     end
  456.     subinit = prog_init_rybusa()
  457.     if subinit then
  458.         table.insert(update_table, subinit)
  459.     end
  460.     subinit = prog_init_sepie()
  461.     if subinit then
  462.         table.insert(update_table, subinit)
  463.     end
  464.     subinit = prog_init_krab4()
  465.     if subinit then
  466.         table.insert(update_table, subinit)
  467.     end
  468.     subinit = prog_init_krab3()
  469.     if subinit then
  470.         table.insert(update_table, subinit)
  471.     end
  472.     subinit = prog_init_krab2()
  473.     if subinit then
  474.         table.insert(update_table, subinit)
  475.     end
  476.     subinit = prog_init_snek()
  477.     if subinit then
  478.         table.insert(update_table, subinit)
  479.     end
  480.     subinit = prog_init_krab1()
  481.     if subinit then
  482.         table.insert(update_table, subinit)
  483.     end
  484.     return update_table
  485. end
  486. local update_table = prog_init()
  487.  
  488.  
  489. -- -----------------------------------------------------------------
  490. -- Update
  491. -- -----------------------------------------------------------------
  492. function prog_update()
  493.     for key, subupdate in pairs(update_table) do
  494.         subupdate()
  495.     end
  496. end
  497.  
  498.